Methods and apparatus for culling sorted, back facing graphics data

ABSTRACT

A method for rendering an image of a digital object. The method includes sorting data representative of the positions of at least three vertices of each polygon that makes up the digital object, then determining whether the orientation of the vertices of each polygon from a specific reference point differs from the actual, or original, orientation of the vertices. The cross product term may also be used in other operations involving the polygon, such as in imparting appearance characteristics to the polygon. The method may be embodied as a computer program (i.e., software or firmware) that controls the operation of a processor. Accordingly, processors, computers, and systems that render images of digital objects in accordance with the method are also disclosed.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates generally to methods and apparatusfor rendering digital objects and, more specifically, to methods foridentifying polygons that are back facing relative to a reference pointand for culling the data of such back facing polygons prior torendering. In particular, the methods and apparatus of the presentinvention decide whether to cull data for a particular polygon after thevertices of that polygon have been sorted to facilitate the acceleratedprocessing of the polygons.

[0003] 2. Background of the Related Art

[0004] As is well known in the art, computers typically breakthree-dimensional objects down into a series of polygons (e.g.,triangles), which together make up the outer surfaces of thethree-dimensional object. The relative positions of each of the polygonsof a three-dimensional object are typically stored and manipulated indigital form; i.e., a series of 0's and 1's that indicates the relativelocations of the polygons to one another on the three-dimensionalobject, as well as the positions, or locations (i.e., x-, y-, andz-coordinates), of the vertices of each polygon of the three-dimensionalobject. Accordingly, for purposes of this disclosure, the digital formof a three-dimensional object is referred to as a “digital object”.

[0005] The data for each polygon of a digital object typically includespositional data for at least three vertices of the polygon along twoadjacent edges. If the polygon is a triangle, the digital make-up of thetriangle includes positional data for all three vertices of thetriangle. Typically, the positional data for the vertices of eachpolygon of the digital object are arranged in the same orientation, ororder. For example, the positional data for the vertices of all of thepolygons of a digital object may be ordered around the peripheries ofthe polygons in a clockwise (CW) orientation or in a counter-clockwise(CCW) orientation.

[0006] In addition to breaking a three-dimensional object down to datarepresentative of the vertices of a collection of polygons havingspecific relative positions, characteristic data (e.g., color, shading,texture) for the entire three-dimensional object, for a portion thereof,or for each polygon or a small set of polygons may also be stored andprocessed in digital form.

[0007] When viewed from a specific reference point, such as from theviewpoint of a computer user looking at a video monitor or from onelooking at an image on paper, a digital three-dimensional object isshown in two dimensions. Typically, only the portions of the digitalobject that face, or that are visible from, the reference point areshown. These portions of the digital object are the so-called “frontfacing” polygons of the digital object. This is true both when thedigital object is in a stationary position and when the digital objectis being moved or manipulated.

[0008] Polygons of a digital object that do not face the reference pointare typically referred to as “back facing” polygons. Relative to thereference point, the vertices of a back facing polygon have anorientation that is opposite the actual orientation of the vertices ofthat polygon. For example, if a polygon with CW-oriented vertices isback facing, the vertices will appear, from the reference point, to havea CCW orientation.

[0009] As back facing polygons of a digital object do not face areference point, such as a viewer, back facing polygons are typicallynot displayed to the viewer. Accordingly, prior to rendering eachsynthesized, or rendered, image (i.e., each particular orientation orstate), or scene, of the digital object, the other, non-visible, backfacing polygons of the digital object are typically culled, oreliminated from further processing until an image of the digital objecthas been rendered. By culling data for back facing polygons, renderingof an image of the digital object will be accelerated.

[0010] Prior to rendering an image of the digital object, the positionaldata for the vertices of a polygon are typically evaluated to determinewhether, relative to the reference point of a viewer, the polygon isfront facing or back facing.

[0011] Once the polygons of an image or scene of a digital object aretransformed into the viewer's perspective (i.e., a two-dimensionalimage), the sign (S) of the z-axis term of the cross product, or crossproduct term (CPT), of two edges of each transformed polygon willindicate the orientation of vertices of the polygon (e.g., whether thetransformed polygon has a CW or CCW orientation). For example, if thevertices of a polygon are oriented CW, the actual, or original, sign bit(S₀) is a “1”. If the vertices of a polygon are oriented CCW, theactual, or original, sign bit (S₀) is a “0”. This sign bit is then usedto compare the (two-dimensional) position of each polygon in the imageto be rendered to its actual, or original, orientation on the object(its two-dimensional orientation when front facing). If theseorientations are not equal, the polygon is determined to be a backfacing polygon and the data is culled from the rendering process.

[0012] A example of a conventional method for back face culling includesselecting the vertices, V0, V1, and V2, along two adjoined edges of eachpolygon. For purposes of this disclosure, V0, V1, and V2 refer to theorder in which the positional data for the vertices of a polygon areintroduced into a rendering application; these designations do notnecessarily refer to the order in which vertices are located around theperiphery of the polygon. The two-dimensional x-axis and y-axispositions of each of the vertices of a polygon of a digital object to bedisplayed or otherwise output are then determined, with V0.x, V1.x, andV2.x being the respective x-axis positions of vertices V0, V1, and V2and V0.y, V1.y, and V2.y being the respective y-axis positions ofvertices V0, V1, and V2. The differences between the x-axis and y-axispositions of each of the selected vertices are then determined, forexample, as follows:

[0013] X10=V1.x−V0.x;

[0014] Y12=V1.y−V2.y;

[0015] X12=V1.x−V2.x; and

[0016] Y10=V1.y−V0.y.

[0017] The cross product term for the polygon is then calculated, asfollows:

[0018] CPT=(X10×Y12)−(X12×Y10).

[0019] Assuming that the digital order in which the positional data forthe analyzed vertices, V0, V1, and V2, are arranged remains unchangedfrom the order in which the positional data for these vertices wasintroduced into the rendering application, the sign (S) of the CPT(S=sign (CPT)) is then used to determine whether or not the data for theanalyzed polygon should be culled prior to rendering. If the actualorientation of the vertices of the polygon was CW (i.e., S₀=1) and S=0,the analyzed polygon is back facing and, accordingly, the positionaldata for that polygon is culled. Alternatively, if the actualorientation of vertices of the polygon was CCW (i.e., S₀=0) and S=0, thepositional data for the vertices of the polygon is retained forrendering purposes, as the polygon is front facing relative to thereference point and the polygon will be shown when the digital object isdisplayed or otherwise output.

[0020] In rendering a two-dimensional image of a three-dimensionaldigital object, it is often necessary to sort the vertices of eachpolygon. For example, the positional data for the vertices of aparticular polygon of the digital object may be introduced into therendering application in a particular order, which is then changed, suchas in a triangle setup operation, to facilitate rendering of thepolygon. Accordingly, the positional data for the various vertices ofthe polygon may be re-ordered, or shuffled, which will change a crossproduct term that is based on the order in which the positional data forthe vertices is presented. Thus, while conventional methods for cullingback facing polygons decrease the amount of time necessary to render animage of a digital object, the vertex differences or CPT's calculated bythese methods cannot be reliably reused for subsequent renderingoperations, such as polygon characterization processes (e.g.,determining the coloration, shadowing, or texturing of a polygon). As aconsequence, the vertex differences or CPT's must be recalculated oncesorting has occurred.

[0021] Moreover, if the positional data for the vertices of a particularpolygon are sorted prior to determining the vertex differences or CPT's,without having the positional data for each vertex tied to an indicatorof the position of the vertex on the polygon, the sign of a subsequentlycalculated CPT could provide incorrect information about whether thepolygon is front facing or back facing.

[0022] No known prior art method or apparatus uses a cross product termobtained by evaluating sorted vertices that can be used in analyzingpolygons of a graphic image and determining whether to cull datarepresentative of each analyzed polygon. Similarly, no known method orapparatus is used for calculating a CPT that may be used both indecisions to cull back facing polygons of a digital object and insubsequent rendering operations.

SUMMARY OF THE INVENTION

[0023] The present invention includes a method for using sorted verticesto make a decision on whether to cull back facing polygons. Apparatusand systems use the method to display one or more images of a digitalobject are also within the scope of the present invention.

[0024] The method of the present invention includes sorting the verticesof at least one polygon of a digital object, determining a cross productterm (CPT) for the sorted vertices of the polygon, and determiningwhether or not the sign of the cross product term (CPT) should bereversed, or multiplied by −1.

[0025] Methods incorporating teachings of the present inventionfacilitate the use of sorted vertices in calculating the positionaldifferences between the sorted vertices, as well as the use of sortedvertices in calculating a cross product term for the sorted vertices.The sign of the cross product term may then be used to determine whetherthe analyzed polygon is back facing and, if so, to indicate a decisionto cull data representative of the polygon from the process of renderingan image of a digital object of which the back facing polygon is a part.In addition, the positional differences and cross product termcalculated in accordance with teachings of the present invention foreach analyzed polygon may also be used in other operations relating tothe processing or rendering of that polygon and of a digital image ofwhich that polygon is a part.

[0026] The data for the vertices of each polygon of a digital object maybe sorted by known processes, such as those employed in triangle setupprocedures. Once the data is sorted, a cross product term for the datamay be determined, also using known processes.

[0027] Sorted and potentially rearranged vertices are used in accordancewith the method of the present invention to determine the positionaldifferences between the selected vertices of each analyzed polygon of adigital object, as well as the cross product term (CPT) of the selectedvertices. Nonetheless, because the order of the selected vertices ofeach analyzed polygon may have been rearranged, the positionaldifferences between adjacent ones of the selected vertices of eachanalyzed polygon and the cross product term (CPT) of each analyzedpolygon may not indicate whether an analyzed polygon is a front facingor back facing polygon. Rather, the sign of the cross value term mayindicate that a front facing polygon is back facing or that a backfacing polygon is front facing. The method of the present invention,therefore, includes a process wherein the order into which the data forthe vertices of the polygon has been sorted is analyzed to determinewhether or not the sign of the cross product term (CPT) should bechanged, or inverted, prior to making a back face culling decision. Anexemplary embodiment of this process includes computing a decisionvariable, T, to determine whether to change the sign of the crossproduct term (e.g., from positive to negative or from 1 to 0, or fromnegative to positive or from 0 to 1).

[0028] Since the cross product term (CPT) and the values of thepositional differences between the vertices of each analyzed polygon arebased on sorted vertex data, these values may be used in otheroperations, such as coloring, shading, and texturing, that are conductedon each front facing polygon prior to rendering an image of a digitalobject.

[0029] Other features and advantages of the present invention willbecome apparent to those of ordinary skill in the art throughconsideration of the ensuing description, the accompanying drawings, andthe appended claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0030] In the drawings, which illustrate exemplary embodiments of thepresent invention:

[0031]FIG. 1 is a schematic illustration of a three-dimensional digitalobject, including, from the reference point of a viewer's perspective,front facing polygons, shown in solid lines, and back facing polygons,shown in phantom;

[0032]FIG. 2 is a flow diagram that illustrates the method of thepresent invention;

[0033]FIG. 3 schematically depicts a polygon of the digital objectillustrated in FIG. 1; and

[0034]FIG. 4 is a schematic representation of a system and apparatusthat operate under control of a program incorporating methods of thepresent invention.

DETAILED DESCRIPTION OF THE INVENTION

[0035] With reference to drawing FIG. 1, a three-dimensional digitalobject 10 is schematically illustrated. At least an outer surface 12 ofdigital object 10 is made up of a plurality of polygons 14, which areillustrated as being triangles having substantially identicaldimensions. Each polygon 14 of digital object 10 includes at least threevertices 16, or corners. The numeric data stored for each polygon 14 ofdigital object 10 represents the positions of each vertex 16 of polygon14 in the x-, y-, and z-axes. Data representative of the positions ofthe at least three vertices 16 of all of the polygons 14 that make up atleast outer surface 12 of digital object 10 are used in variousprocesses, including movement or manipulation of digital object 10, aswell as in rendering an image of digital object 10.

[0036] A digital object 10 is rendered to display an image of digitalobject 10 to a viewer, such as on a computer monitor or on a printedpage. Once the digital object has been manipulated or moved relative toa reference point, such as the perspective of a viewer, the digitalobject must be re-rendered to indicate movement thereof to the viewer.

[0037] In rendering an image of a digital object 10, data regarding theorientation of digital object 10 and of the polygons 14 thereof isevaluated and data representative of the positions of the vertices 16 ofeach polygon 14 of digital object 10 is used to “build” and image ofdigital object 10 as it is to be shown to a viewer, such as on acomputer monitor or on a printed page. The present invention includesmethodology for effecting a portion of the rendering process, whereinthe vertex 16 data for each polygon 14 of a digital image 10 is sorted,then the data for vertices 16 of polygons 14 that will not be visiblefrom the reference point of a viewer (e.g., a computer user) will beculled, or omitted, from the rendering process, thus consuming lessrandom access memory of a computer and speeding up the renderingprocess.

[0038] Illustrated in drawing FIG. 2 is a flow diagram illustrating thesorting and back face cull decision-making processes of the presentinvention.

[0039] Illustrated in drawing FIG. 3 is a graphic representation of ananalyzed polygon 14 of a digital object 10 (see FIG. 1). As illustrated,polygon 14 is a triangle and includes three vertices 16 a, 16 b, and 16c.

[0040] With reference to both drawing FIGS. 2 and 3, prior to renderingan image of digital object 10, data for each vertex 16 of each polygon16 of digital object 10 are sent to a portion of a processor undercontrol of a sorting application, as shown at reference character 110 ofFIG. 2. The order in which data for each of vertices 16 a, 16 b, 16 c ofpolygon 14 are sent to the processor to be sorted may or may not bearbitrary. For example, the positional data for each of the vertices ofa polygon may be organized in an order that facilitated a determinationof new positions of each vertex following movement of the digitalobject. While the positional data for each of the three or more verticesof a polygon is “tied to”, or associated with, that polygon, in order toconserve memory, the positional data may not be associated with anindicator for a position of a vertex on the polygon relative to othervertices of the polygon, rather, corresponding x-axis, y-axis, andz-axis data could be associated with a particular vertex based merely onthe relative bit locations of these data.

[0041] Data representative of the actual CW or CCW orientation ofvertices 16 a, 16 b, 16 c of all of the polygons 14 of digital object 10may also be sent to the processor, also at reference character 110 ofdrawing FIG. 2.

[0042] As the data for vertices 16 a, 16 b, 16 c may be sent to theprocessor in an arbitrary order, the data representative of thepositions of vertices 16 a, 16 b, 16 c are then sorted, or organized orordered, as indicated at reference character 112 of drawing FIG. 2, in amanner that facilitates further processing and use of datarepresentative of the positions of vertices 16 a, 16 b, 16 c and othervalues based thereon in rendering of an image of digital object 10.

[0043] For example, in triangle setup, the coordinates of vertices 16 a,16 b, 16 c are rasterized so the locations of the lines that defineedges 18 a, 18 b, 18 c of each polygon 14 of digital object 10 may bedetermined and front facing polygons 14 may be rendered. Rasterizationcould proceed in any order (e.g., horizontally from top to bottom orfrom bottom to top, or vertically from left to right or from right toleft). Accordingly, the order of the vertices is determined based on theorder of rasterization. To compute the lines, or polygon edges 18 a, 18b, 18 c, between vertices 16 a, 16 b, 16 c of polygon 14, the relativepositions of vertices 16 a, 16 b, 16 c must be determined and the orderin which positional data representative of each vertex 16 is processedmay be changed, depending on the order of rasterization. As an exampleof the manner in which vertices 16 may be organized, the followingseries of equations may be used: If((V2.y == V0.y) AND (V2.x < V0.x)SORT[2] = 1 Else if (V2.y < V0.y) SORT[2] = 1 Else SORT[2] = 0 If((V1.y== V2.y) AND (V1.x < V2.x) SORT[1] = 1 Else if (V1.y < V2.y) SORT[1] = 1Else SORT[1] = 0 If ((V1.y == V0.y) AND (V1.x < V0.x) SORT[0] = 1 Elseif (V1.y < V0.y) SORT[0] = 1 Else SORT[0] = 0

[0044] This series of equations arranges the positional data forvertices 16 of polygon 14 in order of their relative vertical positions.If two vertices 16 have the same vertical orientation, these twovertices 16 are then organized according to the relative horizontalpositions.

[0045] As the cross product term (CPT) for a particular polygon 14 of adigital object 10 or the sign of the cross product term may depend onthe order in which the positional data for each of vertices 16 a, 16 b,16 c of polygon 14 is introduced into a processor, sorting of the vertexdata may change one or both of the cross product term (CPT) and the signthereof. As a consequence, a cross product term (CPT) that is calculatedbefore positional data for vertices 16 of polygon 14 is sorted may notbe useful in processes that follow a back face culling decision.

[0046] Once sorting has occurred, or concurrently with sorting thevertices of an analyzed polygon of a digital object, as depicted atreference character 114 of drawing FIG. 2, an orientation decisionvariable may be computed (e.g., by the processor) to provide informationabout whether or not the sign of a cross product term for an analyzedpolygon 14, which has yet to be calculated until after the positionaldata for vertices 16 of analyzed polygon 14 has been sorted, willaccurately indicate the orientation of vertices 16 of analyzed polygon14. If the orientation decision variable indicates that the sign of thecross product term will not accurately indicate the orientation ofvertices 16 of analyzed polygon 14, the orientation decision variablefor polygon 14, which is to be subsequently used in a back face cullingdecision to denote that the apparent orientation of vertices 16 ofanalyzed polygon 14, as indicated by the sign of the cross product term,is opposite the actual orientation of vertices 16 of polygon 14 whenviewed from a particular reference point R. Accordingly, the orientationdecision variable indicates that the actual orientation of vertices 16of polygon 14 is inverted from the apparent orientation of vertices 16,as indicated by the sign of the cross product term (CPT).

[0047] As evidenced in the exemplary set of equations provided above,the orientation decision variable may be a three bit variable that isdetermined substantially concurrently with sorting of the positionaldata for each vertex 16 of a polygon 14. By way of example, thefollowing table illustrates, for each sort indication variable, theorder in which vertices 16 of polygon 14 have been sorted (from sortstep 2 to sort step 0, or [2:0]), relative to the pre-sortingorientation, as well as the corresponding one bit orientation decisionvariable (T): SORT [2:0] Relative Vertex Order T 000 V0, V2, V1 1 001N/A N/A 010 V0, V1, V2 0 011 V1, V0, V2 1 100 V2, V0, V1 0 101 V2, V0,V1 1 110 N/A N/A 111 V1, V2, V0 0

[0048] Based on the sorted vertices, a cross product term (CPT) may becalculated (e.g., by the processor), as indicated at reference character116 of drawing FIG. 2. The sign of the cross product term, which isdetermined (e.g., by the processor), as known in the art, at referencecharacter 118 of drawing FIG. 2, along with the orientation decisionvariable, may then be used in a back face culling decision (e.g., by theprocessor), as depicted at reference character 120 of drawing FIG. 2, todetermine whether the orientation of an analyzed polygon 14 has changedfrom its actual orientation. For example, if vertices 16 on each polygon14 of a digital object 10 are actually oriented CW, the sign of thecross product term indicates a CCW orientation, and the decisionvariable (e.g., a “1”) indicates that sorting has switched the sign ofthe cross product term (CPT), the data for an analyzed polygon 14 willbe used in rendering an image with that polygon 14 displayed.Alternatively, if, for a polygon 14 that is actually CW-oriented, thesign of the cross product term (CPT) indicates a CCW orientation and thedecision variable (e.g., a “0”) indicates that sorting had not alteredthe sign of the cross-product term (CPT), the sign of the cross productterm and the orientation decision variable together indicate that ananalyzed polygon 14 is a back facing polygon and the data for polygon 14is, therefore, culled.

[0049] A cross product term (CPT) that has been calculated followingsorting of the data may also be used in processing that follows asorting operation such as triangle setup but that must occur before thedigital object is rendered. For example, but not to limit the scope ofthe present invention, a cross product term (CPT) that is calculatedafter sorting of the positional data for the vertices if a polygon maybe used, as known in the art, to process various characteristicparameters of the polygon, such as the shadowing, color, or texture ofthe polygon, based on the position of the polygon on the digital objectrelative to a specific reference point R.

[0050] Accordingly, methods incorporating teachings of the presentinvention facilitate the faster processing of polygon data, as well as areduction in the amount of memory required to process the polygon data.

[0051] As the method of the present invention is particularly usefulwhen embodied as a set of instructions to control various decisions madeby logic circuits of a computer processor, the present invention alsoincludes apparatus and systems that process and display one or moreimages of digital object 10 or a portion thereof in accordance withteachings of the present invention. Illustrated in drawing FIG. 4 is anexemplary embodiment of such a system 200 and its component apparatus.For example, a system 200 incorporating teachings of the presentinvention may include a computer 210 with a processor 212 and memory 214associated therewith, as well as hardware and programming configured tooutput one or more full or partial images of a digital object 10 to anapparatus that facilitates viewing of the image by a user, such as amonitor 216 or a printer 218.

[0052] Various logic circuits of processor 212 may be configured orprogrammed, such as by a back face culling application, to performcertain tasks in accordance with the inventive method. For example, afirst logic circuit of processor 212 may sort data representative of atleast three vertices 16 (FIGS. 1 and 3) of at least one polygon 14(FIGS. 1 and 3) of digital object 10 (FIGS. 1 and 3), a second logiccircuit of processor 212 may be configured to generate an orientationdecision variable based on relative positions of vertices 16, and athird logic circuit of processor 212 may calculate a cross product termof vertices 16 following sorting thereof by the first logic circuit. Thefirst and second logic circuits of processor 212 may operatesubstantially concurrently, or at different times. When under control ofa program that effects the method of the present invention, processor212 may also include a fourth logic circuit that determines a sign ofthe cross product term. Processor 212 may also include a fifth logiccircuit that determines an orientation of one or more polygons 14 ofdigital object 10 based on the sign of the cross product term and theorientation decision variable. The fifth logic circuit may also decidewhether to cull data of vertices 16 based on the orientation of thecorresponding polygon 14.

[0053] These logic circuits may comprise completely separate circuits ofprocessor 212, or any combination of these logic circuits may bepartially combined.

[0054] Although the foregoing description contains many specifics, theseshould not be construed as limiting the scope of the present invention,but merely as providing illustrations of some of the presently preferredembodiments. Similarly, other embodiments of the invention may bedevised which do not depart from the spirit or scope of the presentinvention. Moreover, features from different embodiments of theinvention may be employed in combination. The scope of the invention is,therefore, indicated and limited only by the appended claims and theirlegal equivalents, rather than by the foregoing description. Alladditions, deletions, and modifications to the invention, as disclosedherein, which fall within the meaning and scope of the claims are to beembraced thereby.

What is claimed is:
 1. A method for preparing a digital object to berendered, comprising: sorting data representative of at least threevertices of at least one polygon of at least a portion the digitalobject; generating an orientation decision variable based on relativepositions of said at least three vertices; and calculating a crossproduct term of said at least one polygon following said sorting.
 2. Themethod of claim 1, further comprising determining a sign of said crossproduct term.
 3. The method of claim 2, further comprising evaluatingsaid sign of said cross product term and said orientation decisionvariable to determine whether to cull said data prior to rendering animage of at least a portion of the digital object.
 4. The method ofclaim 3, wherein said evaluating comprises comparing said sign of saidcross product term, as modified with said orientation decision variable,and an actual orientation of said at least one polygon.
 5. The method ofclaim 1, further comprising using at least one of said cross productterm and a positional difference between two of said at least threevertices to determine an appearance characteristic of said at least onepolygon.
 6. The method of claim 1, wherein said sorting and saidgenerating are effected substantially concurrently.
 7. The method ofclaim 1, wherein said generating comprises generating said orientationdecision variable based upon a sorted order of said data representativeof said at least three vertices.
 8. The method of claim 7, wherein saidgenerating comprises generating said orientation decision variable toindicate that an orientation of said at least one polygon is one of anorientation of said at least one polygon, as indicated by a sign of saidcross product term, and opposite an orientation of said at least onepolygon, as indicated by said sign of said cross product term.
 9. Amethod for preparing a digital object to be rendered, comprising:sorting data representative of at least three vertices of at least onepolygon of the digital object; generating an orientation decisionvariable based on relative positions of said at least three vertices;and calculating a cross product term of said at least one polygonfollowing said sorting.
 10. The method of claim 9, further comprisingdetermining a sign of said cross product term.
 11. The method of claim10, further comprising evaluating said sign of said cross product termand said orientation decision variable to determine whether to cull saiddata prior to rendering an image of the digital object.
 12. The methodof claim 11, wherein said evaluating comprises comparing said sign ofsaid cross product term, as modified with said orientation decisionvariable, and an actual orientation of said at least one polygon. 13.The method of claim 9, further comprising using at least one of saidcross product term and a positional difference between two of said atleast three vertices to determine an appearance characteristic of saidat least one polygon.
 14. The method of claim 9, wherein said sortingand said generating are effected substantially concurrently.
 15. Themethod of claim 9, wherein said generating comprises generating saidorientation decision variable based upon a sorted order of said datarepresentative of said at least three vertices.
 16. The method of claim15, wherein said generating comprises generating said orientationdecision variable to indicate that an orientation of said at least onepolygon is one of an orientation of said at least one polygon, asindicated by a sign of said cross product term, and opposite anorientation of said at least one polygon, as indicated by said sign ofsaid cross product term.
 17. A system for rendering an image of adigital object, comprising: a first logic circuit that sorts datarepresentative of at least three vertices of at least one polygon of atleast a portion of the digital object; a second logic circuit thatgenerates an orientation decision variable based on relative positionsof said at least three vertices; and a third logic circuit thatcalculates a cross product term of said at least three verticesfollowing sorting thereof by said first logic circuit.
 18. The system ofclaim 17, wherein said first, second, and third logic circuits are eachunder control of a back face culling application.
 19. The system ofclaim 17, wherein said first, second, and third logic circuits are eachpart of a computer processor.
 20. The system of claim 17, furthercomprising a fourth logic circuit that determines a sign of said crossproduct term.
 21. The system of claim 202, further comprising a fifthlogic circuit that determines an orientation of said at least onepolygon based on said sign of said cross product term and saidorientation decision variable.
 22. The system of claim 21, wherein saidfifth logic circuit also decides whether to cull data of said at leastthree vertices based on said orientation of said at least one polygon.23. The system of claim 17, wherein at least one of said orientationdecision variable and a positional difference between two of at leastthree sorted vertices is useful for imparting a characteristic to saidat least one polygon.
 24. The system of claim 17, wherein said first andsecond logic circuits operate substantially concurrently.
 25. The systemof claim 17, wherein said first and second logic circuits comprise thesame logic circuit.
 26. A system for rendering an image of a digitalobject, comprising: a first logic circuit that sorts data representativeof at least three vertices of at least one polygon of the digitalobject; a second logic circuit that generates an orientation decisionvariable based on relative positions of said at least three vertices;and a third logic circuit that calculates a cross product term of saidat least three vertices following sorting thereof by said first logiccircuit.
 27. The system of claim 26, wherein said first, second, andthird logic circuits are each under control of a back face cullingapplication.
 28. The system of claim 26, wherein said first, second, andthird logic circuits are each part of a computer processor.
 29. Thesystem of claim 26, further comprising a fourth logic circuit thatdetermines a sign of said cross product term.
 30. The system of claim29, further comprising a fifth logic circuit that determines anorientation of said at least one polygon based on said sign of saidcross product term and said orientation decision variable.
 31. Thesystem of claim 30, wherein said fifth logic circuit also decideswhether to cull data of said at least three vertices based on saidorientation of said at least one polygon.
 32. The system of claim 26,wherein at least one of said orientation decision variable and apositional difference between two of at least three sorted vertices isuseful for imparting a characteristic to said at least one polygon. 33.The system of claim 26, wherein said first and second logic circuitsoperate substantially concurrently.
 34. The system of claim 26, whereinsaid first and second logic circuits comprise the same logic circuit.35. A method for processing a digital image including a plurality ofpolygons, each polygon of the plurality including at least threevertices, said method comprising: sorting data representative of the atleast three vertices for each polygon; determining positionaldifferences between adjacent vertices of each polygon following saidsorting; determining a cross product term for each polygon from saidpositional differences; evaluating said cross product term for eachpolygon and a sorted order of said data to determine an orientation ofeach polygon; and culling data representative of polygons oriented in aback facing direction.
 36. The method of claim 35, further comprisingusing at least one of said positional differences in another renderingoperation.
 37. The method of claim 35, further comprising determining asign of said cross product term.
 38. The method of claim 35, furthercomprising evaluating said sign of said cross product term based on saidsorted order of said data.
 39. The method of claim 38, wherein saidevaluating comprises changing said sign.
 40. The method of claim 38,wherein said evaluating comprises leaving said sign unchanged.
 41. Themethod of claim 35, wherein said culling includes comparing said sign toan actual orientation of each polygon to determine whether saidorientation has changed.
 42. The method of claim 35, wherein saidsorting comprises sorting said data based on relative positions of theat least three vertices of each polygon.
 43. The method of claim 42,wherein said sorting comprises sorting said data based on relativevertical positions of the at least three vertices.
 44. The method ofclaim 43, further comprising sorting said data based on relativehorizontal positions of at least two vertices of the at least threevertices.
 45. The method of claim 35, further comprising generating aorientation decision variable.
 46. The method of claim 45, wherein saidgenerating is effected substantially simultaneously with said sorting.47. The method of claim 45, wherein said generating is effectedfollowing said sorting.
 48. The method of claim 45, wherein saidevaluating said sorted order of said data comprises evaluating saidorientation decision variable.
 49. A method for rendering an image of adigital object, comprising: sorting data representative of positions ofat least three vertices of a polygon of the digital object; determininga cross product term for said at least three vertices following saidsorting; determining whether said polygon is front facing or back facingbased at least in part on an actual orientation of said at least threevertices, a sign of said cross product term, and a sorted order of saidat least three vertices; and culling data representative of said atleast three vertices if said polygon is back facing.
 50. The method ofclaim 49, wherein said sorting is effected on a basis of relativepositions of said at least three vertices.
 51. The method of claim 50,wherein said sorting is based on relative vertical positions of said atleast three vertices.
 52. The method of claim 51, wherein said sortingis also based on relative horizontal positions of at least two verticesof said at least three vertices.
 53. The method of claim 49, comprisingdetermining an orientation decision variable based on a sorted order ofsaid data.
 54. The method of claim 53, wherein said determining saidorientation decision variable is effected substantially concurrentlywith said sorting.
 55. The method of claim 53, wherein said determiningsaid orientation decision variable is effected following said sorting.56. The method of claim 53, wherein said determining whether saidpolygon is front facing or back facing based at least in part on saidsorted order of said at least three vertices comprises considering saidorientation decision variable.
 57. The method of claim 49, wherein saidevaluating comprises determining whether said at least three verticesare oriented in a clockwise direction or a counterclockwise direction.58. The method of claim 56, wherein said determining whether saidpolygon is front facing or back facing comprises comparing anorientation in which said at least three vertices are arranged to anactual orientation of said at least three vertices on a surface of saidpolygon.
 59. A method for rendering an image of a digital object thatincludes a plurality of polygons, each of said polygons having at leastthree vertices, said method comprising: sorting data representative ofthe at least three vertices of each polygon of the graphic image;determining an orientation of the at least three vertices based on asorted order of said data; determining whether an orientation of the atleast three vertices of each polygon has changed from an actualorientation of the at least three vertices of each polygon; and cullingdata of the at least three vertices of each polygon when saidorientation has changed from said actual orientation.
 60. The method ofclaim 59, wherein said determining said orientation comprisesdetermining whether said actual orientation of the at least threevertices of each polygon is clockwise or counterclockwise.
 61. Themethod of claim 60, wherein said determining whether said orientation ofthe at least three vertices of each polygon has changed comprisesdetermining whether said orientation is opposite said actualorientation.
 62. The method of claim 61, wherein said sorting comprisesarranging data representative of the positions of the at least threevertices of each polygon based on at least relative vertical positionsof the at least three vertices of each polygon.
 63. The method of claim62, wherein said sorting further comprises arranging said data based onhorizontal positions of at least two vertices of the at least threevertices.
 64. The method of claim 59, comprising generating anorientation decision variable based on said orientation.
 65. The methodof claim 64, further comprising calculating a cross product term foreach polygon based on sorted data.
 66. The method of claim 64, furthercomprising determining a sign of said cross product term.
 67. The methodof claim 66, wherein said determining whether said orientation of the atleast three vertices of each polygon has changed comprises evaluatingsaid sign of said cross product term and said orientation decisionvariable.
 68. The method of claim 59, further comprising providing eachpolygon with and appearance based at least in part on at least one of across product term of that polygon and a positional difference betweenat least two vertices of the at least three vertices of that polygon.